import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertEquals;

class generateAnswerTest{
    @Test
    void generateAnswer() {
        //检查答案数字数量是否为4，其中是否无重复数字，以及数字是否都在0-9之间。
        int s = 4;
        nguessnumber nguessnumber =new nguessnumber();
        assertEquals(s,nguessnumber.generateAnswer().length);
        System.out.println("数字数量为4，正确");
        //System.out.println(Arrays.toString(nGuessNumber.generateAnswer()));
        int num [] = nguessnumber.generateAnswer();

        boolean flag = false;
        int numsize = 0;

        for (int i=0; i<s; i++){
            if(num[i]>=0&&num[i]<=9){
                numsize=1;
            }else{
                numsize=0;
            }
            for (int l=0; l<=i; l++){
                if(i!=l) {
                    if (num[i] == num[l]) {
                        flag = false;
                    } else {
                        flag = true;
                    }
                }
            }
        }

        assertEquals(true,flag);

        System.out.println("其中无重复数字，正确");

        assertEquals(1,numsize);
        System.out.println("数字都在0-9之间，正确");

    }
}
class getPlayerInputTest{
    @Test
    void getPlayerInput() {
        //请使用断言检查玩家猜测的数字数量是否为4。
        int numsize = 4;
        nguessnumber nGuessNumber = new nguessnumber();
        assertEquals(numsize,nguessnumber.guesslist.length);
        System.out.println("用户输入的数字数量为4，正确");
    }
}
class compareGuessAnswer{
    @Test
    void compareGuessAnswer() {
        nguessnumber nGuessNumber = new nguessnumber();

        int testguess []= nguessnumber.guesslist;
        int testnum []= nguessnumber.generateAnswer();
        //System.out.println(Arrays.toString(testguess));
        int a_num = 0;
        int b_num = 0;
        for (int i = 0; i < testnum.length; i++) {
            for (int l=0; l < testnum.length; l++){
                if(i!=l){
                    if(testnum[i]==testguess[l]){
                        b_num++;
                    }
                }else{
                    if(testnum[i]==testguess[l]){
                        a_num++;
                    }
                }
            }
        }
        String s = a_num+"A"+b_num+"B\n"+"A表示存在且位置正确的数字个数，B表示存在且位置不正确的数字个数！\n"+"如：1A2B,表示你猜测的四个数字有3个是对的，有一个位置对，两个位置不对。";
        assertEquals(s,nGuessNumber.compareGuessAnswer());

        System.out.println();
        System.out.println("测试比较玩家猜测和答案后，返回的提示信息，正确");
    }
}
class isWin{
    @Test
    void isWin() {
        nguessnumber nguessnumber = new nguessnumber();

        if(nguessnumber.isWin()==true){
            assertEquals(true,nguessnumber.isWin());
            System.out.println("根据提示信息中A的数量判断玩家是否获胜，如果获胜返回true，否则返回false，返回结果类型正确");
        }else if(nguessnumber.isWin()==false){
            assertEquals(false,nguessnumber.isWin());
            System.out.println("根据提示信息中A的数量判断玩家是否获胜，如果获胜返回true，否则返回false，返回结果类型正确");
        }else{
            assertEquals(true,nguessnumber.isWin());
            assertEquals(false,nguessnumber.isWin());
            System.out.println("根据提示信息中A的数量判断玩家是否获胜，如果获胜返回true，否则返回false，返回结果类型错误");
        }
    }
}